using SO;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public interface IItemUI
{
    public void Init(ItemDataSO itemDataSO);
    public GameObject GameObject { get; }
    public ItemDataSO ItemData { get; }
    public void BeUsed();
}
public class ItemUI : MonoBehaviour, IItemUI, IPointerClickHandler
{
    private Image image;
    private ItemDataSO itemDataSO;

    public GameObject GameObject => gameObject;

    public ItemDataSO ItemData => itemDataSO;

    private void Awake()
    {
        image = GetComponent<Image>();
    }
    public void Init(ItemDataSO itemDataSO)
    {
        if (image == null)
        {
            image = GetComponent<Image>();
        }
        this.itemDataSO = itemDataSO;
        image.sprite = itemDataSO.spriteOnCanvas;
    }

    public void OnPointerClick(PointerEventData eventData)
    {
        Debug.Log("Item clicked: " + itemDataSO.itemName);
    }

    public void BeUsed()
    {
        Debug.Log("Item used: " + itemDataSO.itemName);
    }
}
// using System.Collections;
// using System.Collections.Generic;
// using TMPro;
// using UnityEngine;
// using UnityEngine.UI;
// using SO;
// using UnityEngine.EventSystems;
// using System;

// namespace Backpack
// {
//     public class ItemCell : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler
//     {
//         #region  委托
//         public Action<ItemCell> OnSelectItem;
//         #endregion
//         [SerializeField] private Image spriteImage;

//         private ItemDataSO itemDataSO; //物品数据
//         public ItemDataSO ItemDataSO { get { return itemDataSO; } }


//         // public void PutIn(ItemDataSO itemDataSO)
//         // {
//         //     if (this.itemDataSO == null)
//         //     {
//         //         RefreshCellInformation(itemDataSO);
//         //     }
//         //     else if (this.itemDataSO.id == itemDataSO.id)
//         //     {
//         //         ChangeAmount(1);
//         //     }
//         //     else
//         //     {
//         //         RefreshCellInformation(itemDataSO);
//         //     }

//         // }
//         public void BeUsed()
//         {
//             var execution = ItemFactory.Instacne.GetItem(ItemDataSO.id);
//             if (execution == null) return;
//             execution.Init(ItemDataSO);
//             execution.BeUsed();
//             BackpackSystem.Instance.RemoveItem(ItemDataSO.id);
//         }
//         // public void RemoveItem()
//         // {
//         //     if (amount > 0)
//         //     {
//         //         ChangeAmount(-1);
//         //     }
//         // }
//         // public ItemDataSO TakeOut()
//         // {
//         //     if (amount > 0)
//         //     {
//         //         ItemDataSO itemDataSO = this.itemDataSO;
//         //         ChangeAmount(-1);
//         //         return itemDataSO;
//         //     }
//         //     return null;
//         // }
//         /// <summary>
//         /// 更换为新物体时刷新
//         /// </summary>
//         /// <param name="itemDataSO"></param>
//         // private void RefreshCellInformation(ItemDataSO itemDataSO)
//         // {
//         //     spriteImage.enabled = true;
//         //     amountText.enabled = true;

//         //     this.itemDataSO = itemDataSO;

//         //     spriteImage.sprite = itemDataSO.spriteOnCanvas;



//         //     ChangeAmount(1);

//         //     isNull = false; //设置非空
//         // }
//         public void Clear()
//         {
//             itemDataSO = null;
//             spriteImage.sprite = null;
//             spriteImage.enabled = false;
//             amountText.text = "0";
//             amountText.enabled = false;
//         }

//         public void OnPointerClick(PointerEventData eventData)
//         {
//             //判断当前是否是选择合成模式
//             //使用物品？？
//             OnSelectItem?.Invoke(this);
//         }

//         /// <summary>
//         /// 改变change数值数量
//         /// </summary>
//         /// <param name="change">该变量</param>
//         private void ChangeAmount(int change)
//         {
//             UpdateAmount(amount + change);
//         }
//         /// <summary>
//         /// 更新为指定值
//         /// </summary>
//         /// <param name="amount"></param>
//         private void UpdateAmount(int amount)
//         {
//             this.amount = amount;

//             if (amount <= 0)
//             {
//                 Clear();
//                 amount = 0;
//                 isNull = true;
//             }
//             amountText.text = amount.ToString();
//         }

//         public void OnPointerEnter(PointerEventData eventData)
//         {
//             if (BackpackModel.Instance.isCombining)
//             {

//             }
//         }
//     }
// }

